/**
编写一个程序，找出第 n 个丑数。

丑数就是质因数只包含 2, 3, 5 的正整数。

示例:

输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
说明:  

1 是丑数。
n 不超过1690。


来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/ugly-number-ii
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
var ugly = []int{1}
func init(){
    i1, i2, i3 := 0, 0, 0
    for i:=1;i<1690;i++{
        u := min(2*ugly[i1],3*ugly[i2],5*ugly[i3])
        ugly = append(ugly,u)
        if u == 2*ugly[i1]{
            i1++
        }
        if u == 3*ugly[i2]{
            i2++
        }
        if u == 5*ugly[i3]{
            i3++
        }
    }
}
func nthUglyNumber(n int) int {
    return ugly[n-1]
}
func min(a,b,c int)int{
    if a > b{
        if b > c{
            return c
        }else{
            return b
        }
    }else{
        if a > c{
            return c
        }else{
            return a
        }
    }
}